package ru.ssau.customerManagement.model;

import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import ru.ssau.customerManagement.model.entities.Customer;
import ru.ssau.customerManagement.model.entities.CustomerLocation;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by illabefat on 20.12.14.
 */
public interface Model {
    public Customer getCustomer(Long id);

    public CustomerLocation getCustomerLocation(Long id);

    public List<CustomerLocation> getCustomerLocationsByCustomer(final Long customerId);

    public List<Customer> getCustomers();

    public void addCustomer(Customer customer);

    public void addCustomerLocation(CustomerLocation location);

    public void changeCustomer(Customer newCustomer);

    public void changeCustomerLocation(CustomerLocation location);

    public void removeCustomer(Long id);

    public void removeCustomerLocation(Long id);

    public boolean isCustomerLocked(Long id);

    public boolean lockCustomer(Long id);

    public void unlockCustomer(Long id);

    public boolean isCustomerLocationLocked(Long id);

    public boolean lockCustomerLocation(Long id);

    public void unlockCustomerLocation(Long id);
}
